import { accountType } from '@/api/global/interface'

export interface IVirtualRoomListItem {
	id: string
	name: string
	type: string
	e164: string
	rate: string
	exclusive: 'open' | 'close'
	exclusiveUser: string
	publicMeeting: 'open' | 'close'
	status: 'inUse' | 'free'
}

/** 虚拟会议室数据 */
export interface VirtualRoomItemModel {
	audioFormats: []
	/**匿名用户免登陆（0-不允许 1-允许） */
	allowAnonymousMt: 0 | 1
	/**自动画面合成 */
	autoImageComposition: 0 | 1
	banMtCancelMute: 0 | 1
	/**呼叫间隔 */
	callInterval: string
	/**呼叫方式（0-手动呼叫 2-自动呼叫） */
	callMode: 0 | 2
	/**呼叫次数 */
	callTimes: string
	/**不限次数 */
	callTimesUnlimited: boolean
	/**级联回传 */
	cascadeReturn: boolean
	/**级联回传带宽参数 */
	cascadeReturnPara: string
	/**	是否级联上传 */
	cascadeUpload: boolean
	/**协作模式 (1-管理方控制，2-自由协作) */
	dcsMode: 1 | 2
	/**内容共享/会议双流类型 （0-发言会场 1-任意会场） */
	doubleFlowLimit: 0 | 1
	/**e164 号 */
	e164: string
	/**是否开启数据协作 */
	enableDCS: boolean
	/**直播 */
	enableLive: boolean
	/**是否允许RTC接入 */
	enableRtc: 0 | 1
	/**录播 */
	enableVideo: boolean
	/**启用终端强认证 */
	encryptedAuth: boolean
	/**AES秘钥/数据加密密码 */
	encryptedKey: string
	/** SM1算法机密 */
	encryptedSM: boolean
	/**会议数据加密类型（0-不加密 2-AES加密 3- 国密加密） */
	encryptionType: 0 | 2 | 3
	/**专属会议室 */
	exclusive: boolean
	/**专属人员 */
	exclusiveUser: {
		account: string
		accountType: accountType
		name: string
		portrait: string
	}[]
	/**FEC开关 (0-关闭 1-开启) */
	fecMode: 0 | 1
	id: string
	inExclusive: boolean //不需要
	/**初始哑音 */
	initMute: boolean
	/**智能混音 */
	intelligentRemix: boolean
	/**免登陆观看直播 */
	liveNoLogin: boolean
	/**直播密码 */
	livePassword: string
	/** 帧率 */
	frame: number
	/** 码率 */
	rate: number | undefined
	/** 分辨率 	0-无 2-CIF 3-4CIF 12-720P 13-1080P 14-WCIF 15-W4CIF 16-4K */
	resolution: number
	/** 视频格式 6-H.265 4-H264_BP*/
	video: number
	/**优先呼叫协议（0：H323;1:SIP;2:RTC） */
	meetingProtocol: 0 | 1 | 2
	/**会议类型（0-传统会议 1-端口会议 2-SFU纯转发会议） */
	meetingType: 0 | 1 | 2
	/**是否支持多流 */
	multiStream: boolean
	/**全场哑音例外 */
	muteException: boolean
	/**n-1模式 （0-关 1-开）*/
	nMinusOneMode: 0 | 1
	/**会议室名称 */
	name: string
	/**归一重整 */
	oneReforming: boolean
	password: string //不需要
	/**	来宾会议室 */
	publicMeeting: boolean
	quantumEncryption: 0 | 1
	/**简单级联（0-简单级联 1-合并级联） */
	simpleCascade: 0 | 1
	/**媒体资源 （0-不支持 1-资源预占 2-纯转发会议） */
	sourceUsed: 0 | 1 | 2
	startDoubleflow: boolean //不需要
	/**当前会议状态（0-空闲 1-使用中） */
	status: 0 | 1
	superMtNum: 0 | 1 //不需要
	/**会议规模 */
	type: {
		multi: number
		name: string
	}
	userDomainMoid: string //不需要
	/**是否开启双流录像/内容共享录像 */
	videoDoubleflow: 0 | 1
	/**是否发布录像/发布到视频点播 */
	videoPublish: 0 | 1
	/**视频质量（0-质量优先 1-速度优先）*/
	videoQuality: 0 | 1
	/**是否开启会议可见性 */
	visible: boolean
	/**用户可见域列表 */
	visibleUserDomains: { name: string; moid: string }[]
	/**	会议室的初始e164 */
	vmrE164: string
	vmrMoid: string
	/**语言激励 */
	voiceInspireEnable: boolean
	/**语言激励时间 */
	voiceInspireTime: number
	/**录播服务器标识 */
	vrsId: string
	vrsServerMoid: string //不需要
	/**视频会议水印 */
	watermark: boolean
}

export interface MediaVo {
	/** 帧率 */
	frame: number
	/** 码率 */
	rate: number
	/** 分辨率 	0-无 2-CIF 3-4CIF 12-720P 13-1080P 14-WCIF 15-W4CIF 16-4K */
	resolution: number
	/** 视频格式 6-H.265 5-H264_HP(自建模式下传统端口会议未选中H265) 4-H264_BP*/
	video: number
}

/** 前端使用类型 */
export type IVirtualMeetingRoom = Required<VirtualRoomItemModel> & {
	/** 是否选择H265 */
	_H265: boolean
	_bitrateType: number
	/**自定义媒体能力下拉框 */
	_selfMediaList: ISelectItem[]
	/**自定义媒体能力input值 */
	_selfMediaValue: number
}

export interface IVrsListModel {
	netWorkName: string
	serverMoid: string
	serverName: string
	serverType: string
	value: string
	label: string
}

export interface ISelectItem {
	label: string
	value: number
}

export interface IPermission {
	/** 传统会议允许RTC混用,(0-不允许，1-显示，默认关闭，2-显示，默认打开) */
	tradMix: 0 | 1 | 2
	/** 传统会议允许RTC混用,(0-不允许，1-显示，默认关闭，2-显示，默认打开) */
	portMix: 0 | 1 | 2
	/** VRS权限 */
	enableVRS: boolean
	/** DCS权限 */
	enableDCS: boolean
	/** VRS子权限(直播) */
	enableLive: boolean
	/** VRS子权限(录像) */
	enableVideo: boolean
	/** 是否支持量通 */
	enableQuantum: boolean
	/** 端口会议权限 */
	enablePortMedia: boolean
	/** sfu权限 */
	enableSfu: boolean
	/** 传统会议权限 */
	enableTrans: boolean
	/** 开启1080P高清会议权限 */
	enableHDMeeting: boolean
	/** 拥有国密加密权限 */
	certificate: boolean
	/** 是否一体机 */
	integrated: boolean
	/** 是否配置动态口令服务器 */
	hasAuthenticationServer: boolean
	/** 是否支持sm1加密 */
	sm1: boolean
	/** 是否支持60fps */
	'60fps': boolean
	/** 是否支持4k */
	'4K': boolean
	/** 是否支持H265 */
	h265: boolean
	/** 是否有60fps权限 */
	has60FpsInH265: boolean
}
